home *** CD-ROM | disk | FTP | other *** search
- package sheet;
-
- import javax.microedition.lcdui.Alert;
- import javax.microedition.lcdui.AlertType;
- import javax.microedition.lcdui.Display;
- import javax.microedition.lcdui.Displayable;
- import javax.microedition.lcdui.Image;
-
- class Cell$Calculate implements Calculator {
- private Cell$Calculate() {
- }
-
- public void showHelp(Displayable var1, Display var2) {
- Alert var3 = new Alert("Formula help", "To enter a formula, start with '=' sign.\nCell reference: A1/a1..Z99/z99\nMath operators: +, -, *, /, ()\nForce textual value: ', or embrace with \"\"\nBuilt-in functions (case-insensitive):\n abs(x)\n sum(a, b, ...)\n str(n)->string\n num(s)->number", (Image)null, (AlertType)null);
- var3.setTimeout(-2);
- var2.setCurrent(var3, var1);
- }
-
- private Operand checkOperand(Operand var1) throws IllegalArgumentException {
- if (Operand.isName(var1)) {
- Cell var2 = Cell.access$000().getByName(Operand.getName(var1));
- if (var2 != null) {
- if (Cell.access$100(var2) != null) {
- throw new IllegalArgumentException("'" + Operand.getName(var1) + "' doesn't have a value");
- }
-
- if (!Cell.access$200(var2)) {
- throw new IllegalArgumentException();
- }
-
- var1 = Cell.access$300(var2);
- } else {
- var1 = null;
- }
- }
-
- return var1;
- }
-
- public Operand oper(short var1, Operand var2, Operand var3) throws IllegalArgumentException {
- Operand var4 = this.checkOperand(var2);
- Operand var5 = this.checkOperand(var3);
- Operand var6;
- switch (var1) {
- case 1:
- var6 = new Operand(-Operand.getNumber(var4));
- break;
- case 2:
- if (Operand.isNumber(var4) && Operand.isNumber(var5)) {
- var6 = new Operand(Operand.getNumber(var4) + Operand.getNumber(var5));
- } else {
- var6 = new Operand(Operand.getText(var4) + Operand.getText(var5), false);
- }
- break;
- case 3:
- var6 = new Operand(Operand.getNumber(var4) - Operand.getNumber(var5));
- break;
- case 4:
- var6 = new Operand(Operand.getNumber(var4) * Operand.getNumber(var5));
- break;
- case 5:
- var6 = new Operand(Operand.getNumber(var4) / Operand.getNumber(var5));
- break;
- default:
- var6 = var4;
- }
-
- return var6;
- }
-
- public Operand call(String var1, Operand[] var2) throws IllegalArgumentException {
- String var3 = var1.toLowerCase();
- StringBuffer var4 = new StringBuffer("()");
- if (var3.equals("abs")) {
- if (var2.length == 1) {
- return new Operand(Math.abs(Operand.getNumber(this.checkOperand(var2[0]))));
- }
-
- var4.append(" has 1 argument");
- } else if (var3.equals("str")) {
- if (var2.length == 1) {
- return new Operand(Operand.getText(this.checkOperand(var2[0])), false);
- }
-
- var4.append(" has 1 argument");
- } else if (var3.equals("num")) {
- if (var2.length == 1) {
- Operand var5 = new Operand(Operand.getText(this.checkOperand(var2[0])), true);
- if (Operand.isNumber(var5)) {
- return var5;
- }
-
- var4.append(": '");
- var4.append(var5);
- var4.append("' is not a number");
- } else {
- var4.append(" has 1 argument");
- }
- } else {
- if (var3.equals("sum")) {
- int var7 = 0;
-
- for(int var6 = 0; var6 < var2.length; ++var6) {
- var7 += Operand.getNumber(this.checkOperand(var2[var6]));
- }
-
- return new Operand(var7);
- }
-
- var4.append(" doesn't exist");
- }
-
- throw new IllegalArgumentException(var1 + var4.toString());
- }
-
- Cell$Calculate(Cell.1 var1) {
- this();
- }
- }
-